/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package util;


import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.SwingConstants;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import model.Produto;

/**
 *
 * @author Silvanei S
 */
public class ProdutosTableModel extends AbstractTableModel{
    
    private List<Produto> dados;
    private String[] colunas = {"<html><b>Descrição</b></html>", 
                                "<html><b>Valor compra</b></html>", 
                                "<html><b>Valor venda (R$)</b></html>", 
                                "<html><b>Estoque </b></html>",
                                "<html><b>Critico </b></html>",
                                "<html><b>Código barras</b></html>"};
    
    public ProdutosTableModel(){
        
        dados = new ArrayList<Produto>();
        
        DefaultTableCellRenderer direita = new DefaultTableCellRenderer();
        direita.setHorizontalAlignment(SwingConstants.RIGHT);

    }
    
    public void addRow(Produto produto){
        this.dados.add(produto);
        this.fireTableDataChanged();
    }
    
    public void removeRow(int linha){
        this.dados.remove(linha);
        this.fireTableRowsDeleted(linha, linha);
    }
    
    public Produto get(int linha){
        return this.dados.get(linha);
    }
    
    public String getColumnName(int num){
        return this.colunas[num];
    }
    
    @Override
    public int getRowCount() {
        return dados.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    @Override
    public Object getValueAt(int linha, int coluna) {
        DecimalFormat df = new DecimalFormat("#,##0.00;-#,##0.00");
        
        switch(coluna){
            case 0: return dados.get(linha).getDescricao();
            case 1: return df.format(dados.get(linha).getVlrCompra());
            case 2: return df.format(dados.get(linha).getVlrVenda());
            case 3: return dados.get(linha).getEstoque();
            case 4: return dados.get(linha).getCritico();
            case 5: return dados.get(linha).getCodigoBarras();

        }   
        return null;
    }

    public void clearRows() {
        int old = dados.size();
        dados.clear();
        fireTableRowsDeleted(0, old);
    }
    
}
